テストツールでLoadScene -> UnloadAsync した時だけ発生するバグ
概要
UnityTestTool、便利なんだけど、一点面白い挙動を見つけた。
特定条件下でUnloadSceneAsyncが失敗する。
通常のPlayでは発生せず、UnityTestの中でだけ失敗する。安心(?)
再現リポジトリ
https://github.com/sassembla/TestWithLoadSyncThenUnloadAsync/tree/master
対象
Unity2017.3.1p4、Unity2017.4.0f1
ほかにもあるかもしれないが検証は各位の宿題とする。
条件
UnityTestの中で、LoadSceneを使う + そのシーンをUnloadAsyncしようとすると、UnloadAsyncがnullを返してきて詰む。
次のようなLoadSceneAsyncを使ったコードだと平気で、
[UnityTest]
public IEnumerator Async()
{
var cor = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync("Assets/AutoyaTests/RuntimeData/bundledScene.unity", UnityEngine.SceneManagement.LoadSceneMode.Additive);
while (!cor.isDone)
{
yield return null;
}
var unloadCor = UnityEngine.SceneManagement.SceneManager.UnloadSceneAsync("Assets/AutoyaTests/RuntimeData/bundledScene.unity");
while (!unloadCor.isDone)
{
yield return null;
}
}
次のような、LoadSceneを使ったコードだと、unloadCorがnullで吹っ飛んでくる。
[UnityTest]
public IEnumerator Sync()
{
UnityEngine.SceneManagement.SceneManager.LoadScene("Assets/AutoyaTests/RuntimeData/bundledScene.unity", UnityEngine.SceneManagement.LoadSceneMode.Additive);
var unloadCor = UnityEngine.SceneManagement.SceneManager.UnloadSceneAsync("Assets/AutoyaTests/RuntimeData/bundledScene.unity");
while (!unloadCor.isDone)
{
yield return null;
}
}
再現リポジトリのUnityTestを実行すると、Asyncは通過して、Syncは失敗する。
こちらからは以上です。レポートしとこ。